package Model.Construction.Industrie;

import Model.Construction.Travailleur;
import Model.Ville;

public abstract class Industrie extends Travailleur {
    
    protected int stockNourriture; //quantitee actuelle nourriture
    protected int stockTextile; //quantitee actuelle textile
    protected int stockProduit; //quantitee max
    protected int typeProduit;
    protected int production;
    protected int coutProduction = 100;

    public Industrie(int px, int py, Ville v, int prix) {
        super(px, py, v, prix);
        travailleur = 0;
        stockNourriture = 0;
        stockTextile = 0;
    }

    @Override
    public void ajoutAVille(int x, int y) {
        super.ajoutAVille(x, y);
        ville.addIndustrieProduction(this);
    }

    public int getTypeProduit() {
        return typeProduit;
    }

    public int getProduction() {
        return production;
    }
    
    public boolean retraitEstPossible(int a, int typeProduit){
        if(typeProduit == NOURRITURE){
            return (stockNourriture - a >= 0);
        }else if(typeProduit == TEXTILE){
            return (stockTextile - a >= 0);
        }else{
            return false;
        }
    }
    
    public void consommation(int a){
        if(typeProduit == NOURRITURE){
            stockNourriture -= a;
        }else if(typeProduit == TEXTILE){
            stockTextile -= a ;
        }
    }

    public void Produit() {
        if(ville.argentEstSuffisant(coutProduction)){
        switch (typeProduit) {
            case TEXTILE:
                ajoutTextile();
                break;
            case NOURRITURE:
                ajoutNourriture();
                break;
            case NOURRITURE_TEXTILE:
                ajoutNourriture();
                ajoutTextile();
                ville.removeArgent(coutProduction);
                break;
        }
        ville.removeArgent(coutProduction);
        //System.out.println("stock nourriture "+ stockNourriture +"/"+ stockProduit);
        //System.out.println("stock textile "+ stockTextile +"/"+ stockProduit+"\n");
        }
    }
    
    private void ajoutNourriture(){
        if(stockNourriture + production > stockProduit){
                    stockNourriture = stockProduit;
                }else{
                    stockNourriture += production;
                }
    }
    
    private void ajoutTextile(){
        if(stockTextile + production > stockProduit){
                    stockTextile = stockProduit;
                }else{
                    stockTextile += production;
                }
    }

    @Override
    public void destruction() {
        super.destruction();
        ville.removeIndustrieProduction(this);
    }

    @Override
    public void payerImpot() {
        ville.addArgent((int) impot * travailleur / travailleurMax);
    }
}
